elastic search|April 18, 2018|2 min read

Common used Elastic Search queries

TL;DR

Quick reference for everyday Elasticsearch operations: list indices, search documents, match queries, bool filters, and aggregations with curl examples.

Common used Elastic Search queries

Listing down the commonly used Elastic Search queries.

To see all available Index names

GET /_cat/indices?v

Output:

``` health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open .kibana HObWTCY_SZOWqShWiQ1vRA 1 1 8 3 55.5kb 27.7kb ```

To see all the Documents for an Index

GET INDEX_NAME/_search
{
  "query": {
    "match_all": {}
  }
}

To see all the Documents for an Index and a type

GET INDEX_NAME/TYPE_NAME/_search
{
  "query": {
    "match_all": {}
  }
}

Insert/Update a document

PUT INDEX_NAME/TYPE_NAME/6
{
  "name": "name2",
  "createdAt": "2017-07-27T08:38:48.276Z"
}

Delete a document by Id

DELETE INDEX_NAME/TYPE_NAME/ID

Get only specified attributes of document in result

GET INDEX_NAME/TYPE_NAME/_search
{
  "query": {
    "match_all": {}
  },
  "_source": ["ATTRIBUTE_NAME1", "ATTRIBUTE_NAME2"]
}

Get result within Date ranges specified

You can get search results within two dates specified.

Assuming: createdAt is the attribute which has date of creation of document.

Here,
gte means, greater than or equal to
lte means, less than or equal to

GET INDEX_NAME/TYPE_NAME/_search
{
  "query": {
    "range": {
      "createdAt": {
        "gte": "24/07/2017-13/02/12",
        "lte": "26/07/2017-15/02/05",
        "format": "dd/MM/yyyy-HH/mm/ss"
      }
    }
  }
}

To get last updated record based on date

You have number of records. When you search by a unique identifier, you get all of them. But, in many cases, you might be needing only latest one or last few records.

GET INDEX_NAME/TYPE_NAME/_search
{
  "query": {
    "match": {
      "NAME_ATTRIBUTE": "My identifier for name attribute"
    }
  },
  "size": 10,
  "sort": [
    {
      "createdAt": {
        "order": "desc"
      }
    }
  ]
}

Above code will give 10 records of criteria mentioned. If I need only latest one record. I need to mention size to 1.

GET INDEX_NAME/TYPE_NAME/_search
{
  "query": {
    "match": {
      "NAME_ATTRIBUTE": "My identifier for name attribute"
    }
  },
  "size": 1,
  "sort": [
    {
      "createdAt": {
        "order": "desc"
      }
    }
  ]
}

Search on nested attribute

GET INDEX_NAME/TYPE_NAME/_search
{
  "query": {
    "match": {
      "data.key": "My value"
    }
  }
}

Search on nested attribute, and get latest one

GET INDEX_NAME/TYPE_NAME/_search
{
  "query": {
    "match": {
      "data.key": "My value"
    }
  },
  "size": 1,
  "sort": [
    {
      "createdAt": {
        "order": "desc"
      }
    }
  ]
}

Delete all documents from a Type

DELETE INDEX_NAME/TYPE_NAME/

Delete an Index completely

DELETE INDEX_NAME

Search for the Existence of a Particular Attribute

You want to search for all the documents where this particular attribute is not present.

Note: I’m not talking about its value. Just presence.

GET /index_name/type_name/_search
{
  "query" : {
        "bool": {
          "must_not": [
            { "exists": { "field": "data.attrs.syncIssue" }}
          ]
        }
    }
}

Related Posts

Youtube API in NodeJs, Usage with Example

Youtube API in NodeJs, Usage with Example

This library is ES6, promise compatible. Or, in your package.json file, include…

How to show a block of html or div to the bottom of a web page

How to show a block of html or div to the bottom of a web page

To download this code from git: See: Gyanblog Github

Kubernetes - How to Solve Gateway Timeout with Http Statuscode Error 504

Kubernetes - How to Solve Gateway Timeout with Http Statuscode Error 504

Introduction You have a running kubernetes setup, and have a webservice (exposed…

php55w-common conflicts with php-common-5.* | Php issues while installing libraries

php55w-common conflicts with php-common-5.* | Php issues while installing libraries

I was trying to install mongo extension with pecl. It gave me error: Then, I…

How to Install packages from command line and Dockerfile with Chocolatey

How to Install packages from command line and Dockerfile with Chocolatey

Introduction We will introduce a Package Manager for Windows: . In automations…

Drupal 8 - How to hide a view block if content is empty

Drupal 8 - How to hide a view block if content is empty

Introduction I have created a view, with some filters and content fields. I will…

Latest Posts

REST API Design: Pagination, Versioning, and Best Practices

REST API Design: Pagination, Versioning, and Best Practices

Every time two systems need to talk, someone has to design the contract between…

Efficient Data Modelling: A Practical Guide for Production Systems

Efficient Data Modelling: A Practical Guide for Production Systems

Most engineers learn data modelling backwards. They draw an ER diagram…

Deep Dive on Caching: From Browser to Database

Deep Dive on Caching: From Browser to Database

“There are only two hard things in Computer Science: cache invalidation and…

System Design Patterns for Real-Time Updates at High Traffic

System Design Patterns for Real-Time Updates at High Traffic

The previous articles in this series covered scaling reads and scaling writes…

System Design Patterns for Scaling Writes

System Design Patterns for Scaling Writes

In the companion article on scaling reads, we covered caching, replicas, and…

System Design Patterns for Managing Long-Running Tasks

System Design Patterns for Managing Long-Running Tasks

Introduction Some operations simply can’t finish in the time a user is willing…